import { EntityBase } from 'ibiz-core';
import { IMAJORENTITY } from '../interface';

/**
 * 主实体基类
 *
 * @export
 * @abstract
 * @class MAJORENTITYBase
 * @extends {EntityBase}
 * @implements {IMAJORENTITY}
 */
export abstract class MAJORENTITYBase extends EntityBase implements IMAJORENTITY {
    /**
     * 实体名称
     *
     * @readonly
     * @type {string}
     * @memberof MAJORENTITYBase
     */
    get srfdename(): string {
        return 'MAJORENTITY';
    }
    get srfkey() {
        return this.majorentityid;
    }
    set srfkey(val: any) {
        this.majorentityid = val;
    }
    get srfmajortext() {
        return this.majorentityname;
    }
    set srfmajortext(val: any) {
        this.majorentityname = val;
    }
    /**
     * 主实体标识
     */
    majorentityid?: any;
    /**
     * 建立时间
     */
    createdate?: any;
    /**
     * 更新时间
     */
    updatedate?: any;
    /**
     * 建立人
     */
    createman?: any;
    /**
     * 主实体名称
     */
    majorentityname?: any;
    /**
     * 更新人
     */
    updateman?: any;
    /**
     * 属性
     */
    field?: any;
    /**
     * 属性2
     */
    field2?: any;
    /**
     * 属性3
     */
    field3?: any;
    /**
     * 属性4
     */
    field4?: any;
    /**
     * 属性5
     */
    field5?: any;
    /**
     * 属性6
     */
    field6?: any;
    /**
     * 属性8
     */
    field8?: any;
    /**
     * 属性7
     */
    field7?: any;
    /**
     * 属性9
     */
    field9?: any;
    /**
     * 属性10
     */
    field10?: any;
    /**
     * 属性11
     */
    field11?: any;
    /**
     * 属性13
     */
    field13?: any;
    /**
     * 属性12
     */
    field12?: any;
    /**
     * 属性14
     */
    field14?: any;
    /**
     * 属性15
     */
    field15?: any;
    /**
     * 属性16
     */
    field16?: any;
    /**
     * 属性17
     */
    field17?: any;
    /**
     * 属性18
     */
    field18?: any;
    /**
     * 属性19
     */
    field19?: any;
    /**
     * 属性21
     */
    field21?: any;
    /**
     * 属性20
     */
    field20?: any;
    /**
     * 属性22
     */
    field22?: any;
    /**
     * 属性23
     */
    field23?: any;
    /**
     * 属性24
     */
    field24?: any;
    /**
     * 属性26
     */
    field26?: any;
    /**
     * 属性25
     */
    field25?: any;
    /**
     * 属性27
     */
    field27?: any;
    /**
     * 属性28
     */
    field28?: any;
    /**
     * 属性29
     */
    field29?: any;
    /**
     * 属性31
     */
    field31?: any;
    /**
     * 属性30
     */
    field30?: any;
    /**
     * 属性32
     */
    field32?: any;
    /**
     * 属性33
     */
    field33?: any;
    /**
     * 属性34
     */
    field34?: any;
    /**
     * 属性35
     */
    field35?: any;
    /**
     * 属性36
     */
    field36?: any;
    /**
     * 属性37
     */
    field37?: any;
    /**
     * 属性38
     */
    field38?: any;
    /**
     * 属性39
     */
    field39?: any;
    /**
     * 属性40
     */
    field40?: any;
    /**
     * 属性41
     */
    field41?: any;
    /**
     * 属性43
     */
    field43?: any;
    /**
     * 属性42
     */
    field42?: any;
    /**
     * 属性44
     */
    field44?: any;
    /**
     * 属性45
     */
    field45?: any;
    /**
     * 属性46
     */
    field46?: any;
    /**
     * 属性47
     */
    field47?: any;
    /**
     * 父属性
     */
    field48?: any;
    /**
     * 数值属性
     */
    number?: any;
    /**
     * 状态属性1
     *
     * @type {('100' | '200' | '300' | '400')} 100: 衣服, 200: 鞋子, 300: 电脑, 400: 文具
     */
    statefield1?: '100' | '200' | '300' | '400';
    /**
     * 状态属性2
     *
     * @type {('10' | '20' | '30' | '40')} 10:  未提交, 20: 审批中, 30: 已完成, 40: 已取消
     */
    statefield2?: '10' | '20' | '30' | '40';
    /**
     * 状态属性3
     *
     * @type {('10' | '20' | '30' | '40')} 10: 未提交, 20: 流程中, 30: 完成, 40: 取消
     */
    statefield3?: '10' | '20' | '30' | '40';
    /**
     * 属性49
     */
    field49?: any;
    /**
     * 年收入
     */
    revenue?: any;
    /**
     * 浮点
     */
    float?: any;
    /**
     * 工作日期
     */
    workdate?: any;
    /**
     * 我的任务
     */
    mytasks?: any;
    /**
     * 我的BUG
     */
    mybugs?: any;
    /**
     * 我的过期BUG
     */
    myebugs?: any;
    /**
     * 我的需求
     */
    mystorys?: any;
    /**
     * 未关闭项目
     */
    projects?: any;
    /**
     * 过期项目
     */
    eprojects?: any;
    /**
     * 未关闭产品
     */
    products?: any;
    /**
     * 标题
     */
    title?: any;
    /**
     * 排序属性测试
     */
    sort_field_test?: any;
    /**
     * 非物理字段真假值
     *
     * @type {('false' | 'true')} false: 假, true: 真
     */
    tf?: 'false' | 'true';

    /**
     * 重置实体数据
     *
     * @private
     * @param {*} [data={}]
     * @memberof MAJORENTITYBase
     */
    reset(data: any = {}): void {
        super.reset(data);
        this.majorentityid = data.majorentityid || data.srfkey;
        this.majorentityname = data.majorentityname || data.srfmajortext;
    }
}
